A user of a spreadsheet system may encounter a situation in which is it desirable to transform a large amount of data from one form to another. For example, consider a user who receives a list of customer addresses. The user may wish to transform the addresses into a uniform format. For small data sets, a user may opt to perform this transformation in a manual manner. However, this manual approach is not feasible for larger data sets.
Spreadsheet systems provide various tools to assist the user in performing the type of transformations described above. For example, a spreadsheet system may provide a collection of features that are accessible via menus, dialog boxes, and the like. These features can be used to perform respective functions that may be helpful in transforming data items. However, a typical user may be familiar with only a relatively small number of features provided by a spreadsheet system. Further, the user may be unwilling to learn new features, particularly when the user does not anticipate repeated use of such features.
Spreadsheet systems also allow a user to write custom macro programs to perform transformation tasks. Again, however, this solution is not fully satisfactory. Many end-users have little (or no) formal experience in creating programs. Hence, a user may be dissuaded from even attempting to create a macro program. If the user does make such an attempt, the user may find the task confusing and burdensome, contributing to overall poor user experience. Further, the user's needs may change over time, requiring manual modification of a macro program.
Finally, some spreadsheet systems allow a user to record a series of operations performed in the course of transforming an input item into a desired output item. This yields a mapping rule. The user can apply that mapping rule to new data items to generate new output items. This technique is referred to as macro recording. However, this technique may be quite limited, providing a mapping rule which is useful for only those new input items which very closely mirror the data items that were encountered in the recording mode.
The above features and attendant potential shortcomings are presented by way of illustration. Existing data manipulation functionality may suffer from yet other shortcomings and challenges.